package com.wsd.music.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * springmvc配置类，在springboot启动时自动加载
 */
@Configuration
public class WebMVCConfiguration implements WebMvcConfigurer {

    /**
     * 解决跨域问题
     * 前后端分离项目端口不一致会导致跨域问题
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")  // 所有接口都支持跨域
                .allowedOriginPatterns("*")   // 放行哪些原始域
                .allowedMethods("*")          // 所有请求方式
                .allowCredentials(true);      // 是否发送Cookie信息
    }

    /**
     * 解决前端静态资源无法访问的问题
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // addResourceHandler、addResourceLocations
        // addResourceHandler表示对外暴露的访问路径
        // addResourceLocations表示文件的具体存放目录
        // 配置了addResourceHandler，外部就可以通过其中的访问规则访问资源文件。然后服务器会到addResourceLocations下的目录进行寻找
        registry.addResourceHandler("/img/singerPic/**")
                // 具体的资源地址
                // System.getProperty("user.dir")：程序的当前路径
                // System.getProperty("file.separator")：分隔符，windows和linux不一样
                .addResourceLocations("file:" + System.getProperty("user.dir") +
                        System.getProperty("file.separator") + "img" +
                        System.getProperty("file.separator") + "singerPic" +
                        System.getProperty("file.separator"));

        registry.addResourceHandler("/img/songPic/**")
                .addResourceLocations("file:" + System.getProperty("user.dir") +
                        System.getProperty("file.separator") + "img" +
                        System.getProperty("file.separator") + "songPic" +
                        System.getProperty("file.separator"));

        registry.addResourceHandler("/img/songListPic/**")
                .addResourceLocations("file:" + System.getProperty("user.dir") +
                        System.getProperty("file.separator") + "img" +
                        System.getProperty("file.separator") + "songListPic" +
                        System.getProperty("file.separator"));

        registry.addResourceHandler("/song/**")
                .addResourceLocations("file:" + System.getProperty("user.dir") +
                        System.getProperty("file.separator") + "song" +
                        System.getProperty("file.separator"));
    }
}